package com.zj.sms;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;

/**
 *  zj20160705
 *	2017年10月25日 下午4:29:43
 *  说明:
 */
public class FileUtil {
	public static final String charset = "utf-8";
	public static final String suffer = ".html";  
	/**
	 * 通过uri拼凑文件名
	 * 如果uri最后/后的字符串包含.，则就用最后字符串作为文件名，否则在其后再加上suffer
	 * zj20160705
	 * 2017年10月25日 下午5:08:45
	 * @param uri
	 * @return
	 */
	public static String getFileName(String uri){
		String end = uri.substring(uri.lastIndexOf("/")+1);
		if(end.indexOf(".") != -1){
			return end;
		}
		return end+suffer;
	}
	
	/**
	 * 将InputStream流写入文件内，以流的方式保存文件能保存真实文件
	 * zj20160705
	 * 2017年10月25日 下午4:33:05
	 * @param path
	 * @param fileName
	 * @throws Exception 
	 * @throws IOException 
	 */
	public static void createFile(String path,String fileName,InputStream inputStream) throws Exception{
		File filePath = new File(path);
		if(!filePath.exists()){
			filePath.mkdirs();
		}
		//限制文件名长度为32
		if(fileName.length()>32)fileName = fileName.substring(32);
		File file = new File(path+File.separator+fileName);
		if(file.exists()){
			System.out.println(file.getName()+"\t已存在!");
			return;
		}
		
		OutputStream os = null;
		try {
			os = new FileOutputStream(file);
			byte b[] = new byte[32*1024];
			int j = 0;
			while( (j = inputStream.read(b)) != -1 )
			{
				os.write(b,0,j);
			}
			os.flush();
			os.close();
			System.out.println("创建文件"+file.getAbsolutePath()+" 成功!");
		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}finally{
			if(inputStream!=null)
				try {
					inputStream.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			if(os!=null)
				try {
					os.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
		}
	}
		
	/**
	 * 以String字符串的形式保存非文本文件时，保存之后的文件可能会乱码错误
	 * zj20160705
	 * 2017年10月25日 下午4:33:05
	 * @param path
	 * @param fileName
	 */
	public static void createFile(String path,String fileName,String content){
		File filePath = new File(path);
		if(!filePath.exists()){
			filePath.mkdirs();
		}
		File file = new File(path+File.separator+fileName);
		try {
			BufferedWriter bf = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file,true),charset));//true表示追加
			bf.write(content+"\r\n");//换行追加
			bf.flush();
			bf.close();
			System.out.println("创建文件"+file.getAbsolutePath()+" 成功!");
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
